package br.com.mtech.ctrlliberty.ejb.service;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import br.com.mtech.ctrlliberty.clientjar.ejb.PesquisaEJBRemote;
import br.com.mtech.ctrlliberty.clientjar.entity.CamposPesquisaVO;
import br.com.mtech.ctrlliberty.clientjar.entity.InternetVO;
import br.com.mtech.ctrlliberty.clientjar.entity.LigacaoVO;
import br.com.mtech.ctrlliberty.clientjar.entity.MensagemVO;
import br.com.mtech.ctrlliberty.clientjar.entity.TelefoneVO;
import br.com.mtech.ctrlliberty.clientjar.entity.UsuarioVO;
import br.com.mtech.ctrlliberty.clientjar.exception.BusinessException;
import br.com.mtech.ctrlliberty.ejb.dao.InternetEJBDAOLocal;
import br.com.mtech.ctrlliberty.ejb.dao.LigacaoEJBDAOLocal;
import br.com.mtech.ctrlliberty.ejb.dao.MensagemEJBDAOLocal;
import br.com.mtech.ctrlliberty.ejb.dao.TelefoneEJBDAOLocal;

/**
 * Session Bean implementation class PesquisaEJB
 */
@Stateless
public class PesquisaEJB implements PesquisaEJBRemote {
	
	@EJB
	private TelefoneEJBDAOLocal telefoneDao;
	
	@EJB
	private LigacaoEJBDAOLocal ligacaoDao;
	
	@EJB
	private MensagemEJBDAOLocal mensagemDao;
	
	@EJB
	private InternetEJBDAOLocal internetDao;
	
	@Override
	public LigacaoVO inserir(LigacaoVO ligacao) {
		ligacaoDao.inserir(ligacao);
		return ligacao;
	}
	
	@Override
	public MensagemVO inserir(MensagemVO sms) {
		mensagemDao.inserir(sms);
		return sms;
	}
	
	@Override
	public InternetVO inserir(InternetVO web) {
		internetDao.inserir(web);
		return web;
	}
	
	@Override
	public List<TelefoneVO> listarTelefonesPorUsuario(UsuarioVO usuario) throws BusinessException {
		
		List<TelefoneVO> listaTelefone = telefoneDao.listarTelefonesPorUsuario(usuario);
		
		if(listaTelefone.isEmpty()){
			throw new BusinessException("Usuario sem telefones");
		}
		
		return listaTelefone;
	}
	
	@Override
	public List<LigacaoVO> pesquisarLigacoes(TelefoneVO telefone, CamposPesquisaVO campos) throws BusinessException{
		
		if(telefone == null || campos.getDataInicial() == null || campos.getDataFinal() == null) {
			throw new BusinessException("msg_campos_pesquisa_missing");
		}
		
		List<LigacaoVO> listaLigacao = new ArrayList<LigacaoVO>();
		
		
		listaLigacao = ligacaoDao.pesquisarLigacoes(telefone, campos);
			
		
		if(listaLigacao.isEmpty()) {
			throw new BusinessException("MSG_NENHUM_REGISTRO_ENCONTRADO");
		} 
		
		return listaLigacao;
	}
	
	@Override
	public List<MensagemVO> pesquisarMensagens(TelefoneVO telefone, CamposPesquisaVO campos) throws BusinessException {
		
		if(telefone == null ||campos.getDataInicial() ==null || campos.getDataFinal() == null) {
			throw new BusinessException("msg_campos_pesquisa_missing");
		}
		
		List<MensagemVO> listaMensagem = new ArrayList<MensagemVO>();
		
		
		listaMensagem = mensagemDao.pesquisarMensagens(telefone, campos);
			
		
		if(listaMensagem.isEmpty()) {
			throw new BusinessException("MSG_NENHUM_REGISTRO_ENCONTRADO");
		} 
		
		return listaMensagem;
	}
	
	@Override
	public List<InternetVO> pesquisarInternet(TelefoneVO telefone, CamposPesquisaVO campos) throws BusinessException {
		
		if(telefone == null ||campos.getDataInicial() ==null || campos.getDataFinal() == null) {
			throw new BusinessException("msg_campos_pesquisa_missing");
		}
		
		List<InternetVO> listaInternet = new ArrayList<InternetVO>();
		
		
		listaInternet = internetDao.pesquisarSites(telefone, campos);
			
		
		if(listaInternet.isEmpty()) {
			throw new BusinessException("MSG_NENHUM_REGISTRO_ENCONTRADO");
		} 
		
		return listaInternet;
	}
	
}
